//
//  JSONConvert.m
//  InterventixApp
//
//  Created by Diego Falcinelli on 26/09/13.
//
//

#import "JSONConvert.h"
#import "InterventoCD.h"
#import "ClienteCD.h"
#import "UtenteCD.h"
#import "NSData+Conversion.h"
#import "DateUtil.h"

@implementation JSONConvert



+(NSMutableDictionary *) convertCliente: (ClienteCD *) cliente{
    NSMutableDictionary *diz = [NSMutableDictionary dictionaryWithCapacity:0];
    //ID Intervento
    [diz setObject:cliente.idcliente       forKey:@"idcliente"];
    if(cliente.nominativo!=nil)     [diz setObject:cliente.nominativo      forKey:@"nominativo"];
    if(cliente.codice_fiscale!=nil) [diz setObject:cliente.codice_fiscale  forKey:@"codicefiscale"];
    if(cliente.partita_iva!=nil)    [diz setObject:cliente.partita_iva     forKey:@"partitaiva"];
    if(cliente.telefono!=nil)       [diz setObject:cliente.telefono        forKey:@"telefono"];
    if(cliente.fax!=nil)            [diz setObject:cliente.fax             forKey:@"fax"];
    if(cliente.email!=nil)          [diz setObject:cliente.email           forKey:@"email"];
    if(cliente.referente!=nil)      [diz setObject:cliente.referente       forKey:@"referente"];
    if(cliente.citta!=nil)          [diz setObject:cliente.citta           forKey:@"citta"];
    if(cliente.indirizzo!=nil)      [diz setObject:cliente.indirizzo       forKey:@"indirizzo"];
    if(cliente.ufficio!=nil)        [diz setObject:cliente.ufficio         forKey:@"ufficio"];
    if(cliente.note!=nil)           [diz setObject:cliente.note            forKey:@"note"];
    if(cliente.interno!=nil)        [diz setObject:cliente.interno         forKey:@"interno"];
    if(cliente.revisione!=nil)      [diz setObject:cliente.revisione       forKey:@"revisione"];
    
    if([cliente.cancellato isEqual:@true]){
        [diz setObject:@"true"            forKey:@"cancellato"];
    }else{
        [diz setObject:@"false"          forKey:@"cancellato"];
    }
    
    if([cliente.cestinato isEqual:@true]){
        [diz setObject:@"true"           forKey:@"cestinato"];
    }else{
        [diz setObject:@"false"           forKey:@"cestinato"];
    }
    return diz;

}

+(NSMutableDictionary *) convertIntervento: (InterventoCD *) intervent{
    
    
    NSMutableDictionary *diz = [NSMutableDictionary dictionaryWithCapacity:0];
    //ID Intervento
    [diz setObject:intervent.idintervento    forKey:@"idintervento"];
    
    // Cancellato
    if([intervent.cancellato isEqual: @true]){
        [diz setObject:@"true"           forKey:@"cancellato"];
    }else{
        [diz setObject:@"false"           forKey:@"cancellato"];
    }
    
    if([intervent.cestinato isEqual: @true]){
        [diz setObject:@"true"             forKey:@"cestinato"];
    }else{
        [diz setObject:@"false"            forKey:@"cestinato"];
    }
    if([intervent.chiuso  isEqual: @true]){
        [diz setObject:@"true"             forKey:@"chiuso"];
    }else{
        [diz setObject:@"false"            forKey:@"chiuso"];
    }
    
    
    /// DA VERIFICARE
    [diz setObject:intervent.cliente.idcliente forKey:@"cliente"];
    
    
    if([intervent.conflitto  isEqual: @true]){
        [diz setObject:@"true"             forKey:@"conflitto"];
    }else{
        [diz setObject:@"false"            forKey:@"conflitto"];
    }
    [diz setObject:intervent.costo_accessori  forKey:@"costoaccessori"];
    [diz setObject:intervent.costo_componenti forKey:@"costocomponenti"];
    [diz setObject:intervent.costo_manodopera forKey:@"costomanodopera"];
    
    
    [diz setObject:[DateUtil NSDateToNSNumber:intervent.dataora] forKey:@"dataora"];
    
    //Array dei dettagli
    NSMutableArray *arrDI = [[NSMutableArray alloc] initWithCapacity:[intervent.dettagli count]];
    for(DettaglioCD *di in intervent.dettagli){
        [arrDI addObject:[self convertDettaglio:di]];
    }
    [diz setObject:arrDI forKey:@"dettagliintervento"];
    
    
    if(intervent.firma != nil){
        [diz setObject:[intervent.firma hexadecimalString] forKey:@"firma"];
    }else{
        [diz setObject:[NSNull null] forKey:@"firma"];
    }
    [diz setObject:intervent.importo         forKey:@"importo"];
    [diz setObject:intervent.iva             forKey:@"iva"];
    [diz setObject:intervent.modalita        forKey:@"modalita"];
    
    if(intervent.motivo != nil){
        [diz setObject:intervent.motivo forKey:@"motivo"];
    }else{
        [diz setObject:[NSNull null] forKey:@"motivo"];
    }
    
    if(intervent.nominativo != nil){
        [diz setObject:intervent.nominativo forKey:@"nominativo"];
    }else{
        [diz setObject:[NSNull null] forKey:@"nominativo"];
    }
    
    // NOTE
    if(intervent.note != nil){
        [diz setObject:intervent.note forKey:@"note"];
    }else{
        [diz setObject:[NSNull null] forKey:@"note"];
    }
    // PRODOTTO
    if(intervent.prodotto != nil){
        [diz setObject:intervent.prodotto forKey:@"prodotto"];
    }else{
        [diz setObject:[NSNull null] forKey:@"prodotto"];
    }
    
    [diz setObject:intervent.revisione forKey:@"revisione"];
    
    if(intervent.rif_fattura != nil){
        [diz setObject:intervent.rif_fattura forKey:@"riffattura"];
    }else{
        [diz setObject:[NSNull null] forKey:@"riffattura"];
    }
    
    
    if(intervent.rif_scontrino != nil){
        [diz setObject:intervent.rif_scontrino forKey:@"rifscontrino"];
    }else{
        [diz setObject:[NSNull null] forKey:@"rifscontrino"];
    }
    
    // Saldato
    if([intervent.saldato  isEqual: @true]){
        [diz setObject:@"true" forKey:@"saldato"];
    }else{
        [diz setObject:@"false" forKey:@"saldato"];
    }
    
    
    
    
    [diz setObject:intervent.tecnico.idutente forKey:@"tecnico"];
    
    
    [diz setObject:intervent.tipologia forKey:@"tipologia"];
    [diz setObject:intervent.totale forKey:@"totale"];
    return diz;
}

+(NSMutableDictionary *) convertDettaglio: (DettaglioCD *) dettaglio{
    NSMutableDictionary *diz = [NSMutableDictionary dictionaryWithCapacity:0];
    [diz setObject:dettaglio.iddettaglio                         forKey:@"iddettagliointervento"];
    [diz setObject:dettaglio.tipo                                forKey:@"tipo"];
    [diz setObject:dettaglio.oggetto                             forKey:@"oggetto"];
    [diz setObject:dettaglio.descrizione                         forKey:@"descrizione"];
    [diz setObject:[DateUtil NSDateToNSNumber:dettaglio.inizio]  forKey:@"inizio"];
    [diz setObject:[DateUtil NSDateToNSNumber:dettaglio.fine]    forKey:@"fine"];
    NSMutableArray *idtec = [[NSMutableArray alloc]initWithCapacity:0];
    for(UtenteCD *t in dettaglio.tecnici){
        [idtec addObject:t.idutente];
    }
    [diz setObject:idtec                   forKey:@"tecnici"];
    
    return diz;
}


@end
